In a computer network, a client (e.g. a processor or computer in the network) that wishes to obtain a particular service will generally have a wide range of available resources that are capable of performing the service. While this is advantageous, it also creates resource management problems, e.g., which one of these resources should the client utilize? In order to more efficiently provide services to a client in a network, it is known in the art to provide a server. A server is a device, generally comprising both hardware and software, which acts as an agent between the client and one or more resources to deliver a requested service to the client.
A typical server is capable of providing a plurality of services to a plurality of clients. Changes in the type and quantity of services requested necessarily affect the performance of the server by, for example, increasing the response time of the server, i.e. the time it takes the server to respond to a service request from a client. Moreover, the manner in which a server operates is, to a certain extent, dictated by a set of server parameters. The server parameters may include, for example, the data cache buffer geometry, data cache flushing rate, and open file cache timing window of the server. If the performance of a server is unacceptable, the performance may be improved by changing the server parameters in accordance with a tuning process.
In prior art systems, the server was tuned in a static manner. Specifically, the process of tuning required a person with extensive experience with the server to gather information from the system, determine what caused a performance degradation, and then propose changes in the server parameters. The server must then be shut down and restarted with the new set of parameters. Data must then be gathered and analyzed again in order to determine if the changes had the desired effect. If the performance is still unsatisfactory, the process must be repeated.
This method has obvious disadvantages. It not only requires the personal attention of a highly trained individual but also involves a time consuming process of trial and error that requires shutting down and restarting the server. It is an object of the present invention to solve these problems by providing a dynamic system for automatically tuning a server which does not require a server shutdown.